package com.major.queue;

public class ArrayQueueDemo {
    public static void main(String[] args) {

        ArrayQueue arrayQueue = new ArrayQueue(5);

        arrayQueue.addQueue(4);
        arrayQueue.addQueue(3);
        arrayQueue.addQueue(3);
        //arrayQueue.addQueue(3);
        //arrayQueue.addQueue(3);

        arrayQueue.getQueue();

        //arrayQueue.addQueue(3);

        //arrayQueue.getQueue();

        arrayQueue.showQueue();


    }
}

class ArrayQueue {
    private int maxSize;
    private int front;
    private int rear;
    private int[] arr;

    // 构造
    public ArrayQueue(int arrMaxSize) {
        maxSize = arrMaxSize;
        arr = new int[maxSize];
        front = -1;// 指向头部 前一个 位置
        rear = -1; // 指向尾部 的    位置
    }

    // 是否满
    boolean isFull() {
        return rear == maxSize - 1;
    }

    // 是否空
    boolean isEmpty() {
        return rear == front;
    }

    // 加数据
    void addQueue(int n) {
        if (isFull()) {
            System.out.println("满了，不能加");
            return;
        }
        rear++;
        arr[rear] = n;
    }

    // 取数据
    int getQueue() {
        if (isEmpty()) {
            throw new RuntimeException("空，无数据");
        }
        front++;
        //arr[front] = 0;
        return arr[front];
    }

    // 查看队列
    void showQueue() {
        if (isEmpty()) {
            System.out.println("队列为空");
            return;
        }
        for (int item : arr) {
            System.out.println(item);
        }
    }

    // 显示头数据
    int headQueue() {
        if (isEmpty()) {
            throw new RuntimeException("kong,没有数据");
        }
        return arr[++front];
    }
}
